#include <iostream>
#include <string>
#include <pthread.h>
#include <unistd.h>
#include <cstring>
using namespace std;


void* start_routine(void* args)
{
    string name = static_cast<const char*>(args);
    //将自己设置为分离状态，pthread_self()是获取自己的ID
    // pthread_detach(pthread_self()); 
    int cnt = 5;
    while(cnt--)
    {
        cout << name << " running..." << endl;
        sleep(1);
    }
    return nullptr;
}

int main()
{
    pthread_t tid;
    pthread_create(&tid, nullptr, start_routine, (void*)"thread 1");
    //将创建的新线程分离，分离后该线程退出时自动回收
    pthread_detach(tid);

    //一个线程默认是joinable的，如果设置了分离状态，就不能够进行等待了。
    int n = pthread_join(tid,nullptr);
    cout << n << " : " << strerror(n) << endl;

    // while(true)
    // {
    //     cout << "main thread running..." << endl;
    //     sleep(1);
    // }

    return 0;
}